package model

import "gitee.com/buddyxiao/ginblog/utils/errmsg"

type Category struct {
	ID   uint   `gorm:"primaryKey;autoIncrement" json:"id"`
	Name string `gorm:"type:varchar(20);not null" json:"name"`
}

// CheckCategory 查询分类是否存在
func CheckCategory(name string) (code int) {
	var category Category
	db.Select("id").Where("name = ?", name).First(&category)
	if category.ID > 0 {
		code = errmsg.ERROR_CATEGORY_USED // 分类已存在
	} else {
		code = errmsg.SUCCESS // 分类不存在
	}
	return
}

// CheckUpCategory 编辑查询 分类名
func CheckUpCategory(id int, name string) (code int) {
	var category Category
	db.Select("id").Where("name = ?", name).First(&category)
	if category.ID == uint(id) {
		code = errmsg.SUCCESS // 分类不存在
	} else {
		code = errmsg.ERROR_CATEGORY_USED // 分类已存在
	}
	return
}

// CreateCategory 新增分类
func CreateCategory(data *Category) (code int) {
	if db.Create(data).Error != nil {
		code = errmsg.ERROR
		return
	}
	code = errmsg.SUCCESS
	return
}

// GetCategories 查询分类列表
func GetCategories(pageNum int, pageSize int) ([]Category, error, int) {
	// 查询第几页的所有数据
	offsetValue := (pageNum - 1) * pageSize
	if pageNum == -1 {
		offsetValue = -1 // 不做分页处理
	}
	var categories []Category
	var total int64
	db.Model(&Category{}).Count(&total)
	err = db.Limit(pageSize).Offset(offsetValue).Find(&categories).Error
	if err != nil {
		return nil, err, 0
	}
	return categories, nil, int(total)
}

// 查询某个分类信息
func GetCategory(id int) (Category, int) {
	var cate Category
	if db.First(&cate, id).Error != nil {
		return cate, errmsg.ERROR
	}
	return cate, errmsg.SUCCESS

}

// DeleteCategory 删除分类
func DeleteCategory(id int) int {
	if db.Delete(&Category{}, id).Error != nil {
		return errmsg.ERROR
	}
	return errmsg.SUCCESS
}

// EditCategory 编辑分类
func EditCategory(id int, data *Category) int {
	var maps = make(map[string]interface{})
	maps["name"] = data.Name
	if db.Model(&Category{}).Where("id=?", id).Updates(maps).Error != nil {
		return errmsg.ERROR
	}
	return errmsg.SUCCESS
}
